package com.java.generic;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;

/**
 * 伪泛型：类型擦除真实存在的证明
 */
public class FakeGeneric {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(20);
        System.out.println(list); // [20]
        
        // 只有指定类型的对象才可被添加到集合中
        // list.add("SYX"); // 需要的类型Integer
        
        // 通过反射却可以添加非指定类型的对象
        list.getClass().getMethod("add", Object.class).invoke(list, "SYX");
        System.out.println(list); // [20, SYX]
        
        // 获取数据时又将原始类型强转为指定类型
        Integer integer = list.get(0);
    }
}
